<?php

if(!isset($_SESSION['LoggedIn']))
	$_SESSION['LoggedIn'] = false;

/**
 * Hanterarklass för inloggning
 */
class LoginModel
{
	private static $m_loggedIn = "LoggedIn";
	
	/**
	 * Testar inloggningsfunktioner
	 */
	public function Test()
	{
		// Börjar med att logga ut
		$this->Logout();
		
		// Om vi fortfarande är inloggade är IsLoggedIn felimplementerad
		if($this->IsLoggedIn() == true)
		{
			echo "<p>Enhetstestet misslyckades! Funktionen 'IsLoggedIn' är felaktigt implementerad.</p>";
			return false;	
		}
		
		// Om inloggning med felaktiga uppgifter lyckas är Login felimplementerad
		if($this->Login("admin", "1234") == true)
		{
			echo "<p>Enhetstestet misslyckades! Funktionen 'Login' lyckades med felaktiga parametrar.</p>";
			return false;
		}
		
		// Om inloggning med rätt uppgifter misslyckas är Login felimplementerad
		if($this->Login("admin", "admin1234") == false)
		{
			echo "<p>Enhetstestet misslyckades! Funktionen 'Login' misslyckades med korrekta parametrar.</p>";
			return false;
		}
		
		// Ifall vi fortfarande inte är inloggade
		if($this->IsLoggedIn() == false)
		{
			echo "<p>Enhetstestet misslyckades! Funktionen 'IsLoggedIn' anger fortfarande att användaren inte är inloggad.</p>";
			return false;
		}
		
		return true;
	}
	
	/**
	 * Kontrollerar om användaren är inloggad
	 * @return Boolean
	 */
	public function IsLoggedIn()
	{
		// Om sessionsvariabeln är satt och är true
		if(isset($_SESSION[self::$m_loggedIn]) && $_SESSION[self::$m_loggedIn] == true)
			return true;
		else if(isset($_SESSION[self::$m_loggedIn]) && $_SESSION[self::$m_loggedIn] == false)
			return false;
		else
			return false;
	}
	
	/**
	 * Verifierar inloggning
	 * @param Username string
	 * @param Password string
	 * @return Boolean
	 */
	public function Login($username, $password)
	{
		switch ($username)
		{
			case "admin":
				if($password == "admin1234")
				{
					$_SESSION[self::$m_loggedIn] = true;
					return true;
				}
				break;
			case "fa222cm":
				if($password == "1dv408")
				{
					$_SESSION[self::$m_loggedIn] = true;
					return true;
				}
				break;
			default:
				break;
		}
		return false;
	}
	
	/**
	 * Loggar ut användaren
	 */
	public function Logout()
	{
		// Om sessionsvariabeln är satt och är true
		if(isset($_SESSION[self::$m_loggedIn]) && $_SESSION[self::$m_loggedIn] == true)
			unset($_SESSION[self::$m_loggedIn]);
	}
}
?>